/****** Object:  Table [dbo].[DJBHWH_ERP_LQ]    Script Date: 2024-11-08 17:51:57 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[DJBHWH_ERP_LQ]') AND type in (N'U'))
DROP TABLE [dbo].[DJBHWH_ERP_LQ]
GO

/****** Object:  Table [dbo].[DJBHWH_ERP_LQ]    Script Date: 2024-11-08 17:51:57 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[DJBHWH_ERP_LQ](
	[BMFS] [varchar](50) NOT NULL,
	[DJMC] [varchar](50) NOT NULL,
	[DM] [varchar](50) NOT NULL,
	[DJH] [int] NULL,
	[BYZD1] [varchar](20) NULL,
	[BYZD2] [varchar](20) NULL,
	[BYZD3] [numeric](18, 4) NULL,
	[BYZD4] [numeric](18, 4) NULL,
 CONSTRAINT [PK_DJBHWH_ERP_LQ] PRIMARY KEY NONCLUSTERED 
(
	[BMFS] ASC,
	[DJMC] ASC,
	[DM] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO



INSERT INTO [DJBHWH_ERP_LQ] ([BMFS], [DJMC], [DM], [DJH], [BYZD1], [BYZD2], [BYZD3], [BYZD4]) VALUES ('LIQUAN', 'LIQUAN', 'XSQ', 1, NULL, NULL, NULL, NULL);



/****** Object:  StoredProcedure [dbo].[P_SendCoupon]    Script Date: 2024-11-08 18:07:04 ******/
DROP PROCEDURE [dbo].[P_SendCoupon]
GO

/****** Object:  StoredProcedure [dbo].[P_SendCoupon]    Script Date: 2024-11-08 18:07:04 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


 
CREATE proc [dbo].[P_SendCoupon]
               @DJBH varchar(20), --单据编号
               @Cards VARCHAR(MAX)
AS
DECLARE @StartDate DATETIME, @EndDate DATETIME, @YXQX INT, @YXQFS INT;
                    SELECT  @DJBH=a.DJBH,@StartDate = a.RQ_S, @EndDate = a.RQ_E, @YXQX = a.YXQX, @YXQFS = a.ZDYXQFS
                    FROM dbo.LQZCD a WITH (NOLOCK)
                    WHERE a.DJBH = @DJBH;
DECLARE @TabCoupn Table
(
	Id int,
	VPDM VARCHAR(50),
	GKDM VARCHAR(50),
	LQBH VARCHAR(50),
	CODE VARCHAR(2),
	MSG VARCHAR(100)
);
BEGIN
	IF @DJBH=''
    GOTO FAIL
    DECLARE @ERROR INT =0;
	--生成随机数
	DECLARE @CODE VARCHAR(50);
	SELECT  @CODE=NEWID();
    BEGIN TRAN
	DECLARE @DJH INT=1,@DM VARCHAR(20)='',@LQBHMAX int;
	SELECT @DJH=DJH,@DM=DM FROM DJBHWH_ERP_LQ WHERE BMFS='LIQUAN'
	SELECT  @LQBHMAX=MAX( CONVERT(INT, REPLACE(LQBH,@DM,'')) )  FROM LIQUAN WHERE LQBH LIKE @DM+'%'  
	
	IF @LQBHMAX>@DJH
    BEGIN

    UPDATE DJBHWH_ERP_LQ SET  DJH=@LQBHMAX  WHERE BMFS='LIQUAN'  
    SELECT @DJH=DJH,@DM=DM FROM DJBHWH_ERP_LQ WHERE BMFS='LIQUAN'
  
   END
 
	
	--插入数据到临时表
	INSERT INTO @TabCoupn(VPDM,Id,CODE) SELECT *,'0' FROM FT_GetSplitTable(@Cards);
	--券号15位 固定前缀@DM
	UPDATE A SET A.CODE='1',LQBH=@DM+SUBSTRING('000000000000',1,12-LEN(CAST(ID+@DJH AS VARCHAR(20))))+ CAST(ID+@DJH AS VARCHAR(20)),GKDM=B.GKDM
	FROM @TabCoupn A INNER JOIN V_VIPSET B ON A.VPDM=B.DM
	-- 过滤调VPDM不存在的数据
	UPDATE A SET CODE='9',MSG='VIP不存在' FROM @TabCoupn A WHERE CODE='0';
	 SET @ERROR+=@@ERROR
	--数据发券数量
	DECLARE @CouponNum INT=0;
    SELECT  @CouponNum=COUNT(1) FROM @TabCoupn WHERE CODE='1';
	--更新流水号表发券标记
	UPDATE DJBHWH_ERP_LQ SET DJH=DJH+@CouponNum WHERE  BMFS='LIQUAN'
	--插入礼券制成单明细表
    INSERT INTO LQZCDMX(DJBH, LQBH, STATE)
    SELECT @DJBH,LQBH,'2' FROM @TabCoupn
    SET @ERROR+=@@ERROR
	--插入会员表
    INSERT INTO wx_user_coupon(lqbh, cardno, createddate)
    SELECT LQBH,VPDM,GETDATE() FROM @TabCoupn A WHERE CODE='1'
    SET @ERROR+=@@ERROR
    --插入礼券表
    DECLARE @QDDM NVARCHAR(100),@CKDM NVARCHAR(100),@SJ NVARCHAR(20)
    IF @YXQFS = 2
    BEGIN
        SET @StartDate = GETDATE();
        SET @EndDate = DATEADD(DAY, -1, DATEADD(MONTH, @YXQX, @StartDate));
    END;
    IF @YXQFS = 3
    BEGIN
        SET @StartDate = GETDATE();
        SET @EndDate = DATEADD(DAY, @YXQX - 1, @StartDate);
    END;
    INSERT INTO LIQUAN ( LQBH,LBDM,QDDM,CKDM,QYBJ,TYBJ,ZS,XFJE,BZJE,FSJE,SYJE,BYZD1,RQ_S,RQ_E,status,LQLX,LQZK,LQTOWM,SPZK,VPDM,SPFW)
    SELECT  A.LQBH,LQZCD.LBDM, B.QDDM,B.CKDM,'1','0','0',LQLB.XFJE,LQZCD.BZJE,LQLB.FSJE,LQLB.FSJE ,ISNULL(LQZCD.BYZD1,'0'),
                    CONVERT(VARCHAR(50), @StartDate, 23) + ' 00:00:00' ,
                    CONVERT(VARCHAR(50), @EndDate, 23) + ' 23:59:59' ,
                    '1' ,
                    LQLB.LQLX ,
                    LQZCD.lqzk,
                    '1' ,LQZCD.SPZK,A.VPDM,SPFW
            FROM    LQZCD
                    INNER JOIN LQLB ON LQLB.LBDM = LQZCD.LBDM
					INNER JOIN @TabCoupn A ON A.CODE='1'
					INNER JOIN V_VIPSET B WITH (NOLOCK) ON A.VPDM=B.DM
            WHERE   LQZCD.DJBH=@DJBH 
    SET @ERROR+=@@ERROR
    IF (@ERROR>0)
    BEGIN
    ROLLBACK TRAN
    GOTO FAIL 
    END
    ELSE
    BEGIN
    COMMIT;
    GOTO OK
    END 
    FAIL:
    SELECT CODE,LQBH,VPDM,GKDM,MSG,@StartDate StartDate,@EndDate EndDate,@DJBH DJBH FROM @TabCoupn;
    RETURN;
    OK:
    SELECT CODE,LQBH,VPDM,GKDM,MSG,@StartDate StartDate,@EndDate EndDate,@DJBH DJBH FROM @TabCoupn ;
END
GO



DROP PROCEDURE [dbo].[xb_sjsx]
GO

/****** Object:  StoredProcedure [dbo].[xb_sjsx]    Script Date: 2024-11-08 18:07:50 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO
















--零售销货单满额赠券
CREATE PROCEDURE [dbo].[xb_sjsx] @dh varchar(100) --零售单号
AS
declare @rq varchar(100)
declare @dp varchar(50)
declare @je numeric(18, 4)
declare @zcdh1 varchar(50)
declare @zcdh2 varchar(50)
declare @zcdh3 varchar(50)
declare @djbh varchar(100)
declare @kbcxdh varchar(100)
declare @Sql VARCHAR(MAX)
declare @sql1 VARCHAR(MAX)
declare @hdje numeric(18, 4)
declare @lqzs int
declare @i int
declare @j int
declare @k int
declare @vpdm varchar(50)
    IF EXISTS(SELECT 1
              FROM LSXHD
              WHERE XPBH = @DH)
        BEGIN
            begin
                set @i = 1 --制成单1变量
                set @j = 1 --制成单2变量
                set @k = 1 --制成单3变量
                set @zcdh1 = 'LPH0000041' --制成单1-800-200，11.08-11.12   312门店,409门店
                set @zcdh2 = 'LPH00000027' --制成单2----------------
				set @zcdh3 = 'LPH00000028' --制成单3----------------
                set @hdje = '800' --活动金额

                select @rq = CONVERT(varchar(100), rq, 23), @dp = dm1, @djbh = DJBH ,@vpdm=dm6
                from LSXHD
                where XPBH = @dh --取日期，店铺，零售单号
                select @je = SUM(je) from LSXHDJS where djbh = @djbh and JSFS not in ('001', '005', '066') --查有效金额
                set @lqzs = @je / @hdje
                if not exists(select 1 from lsxhdjs where djbh = @djbh and JSFS = '001') --有礼券不参与返券
                    begin
                        if @dp in (select sddm from lqzcdfw where djbh = @zcdh1) and @rq >= '2024-11-08' and
                           @rq <= '2024-11-12'
                            ---判断店铺和日期是否符合-礼券制成单1   exec P_SendCoupon @zcdh1 ,@vpdm
                            begin

 							DECLARE @zs INT = 1;
							WHILE @zs <= @lqzs
							BEGIN
							exec P_SendCoupon @zcdh1 ,@vpdm
							SET @zs = @zs + 1;
							END

                            end
						else
						if @dp in (select sddm from lqzcdfw where djbh = @zcdh2) and @rq >= '2023-06-17' and
                           @rq <= '2023-06-28'
                            ---判断店铺和日期是否符合-礼券制成单2
                            begin
                               select 1

                            end
                        else
                        if @dp in (select sddm from lqzcdfw where djbh = @zcdh3) and @rq >= '2023-06-22' and
                           @rq <= '2023-06-29'
                            ---判断店铺和日期是否符合-礼券制成单3
                            begin
                                select 1

                            end
                    end
            END
            print (@sql)
            EXEC (@sql)
        end

GO




/****** Object:  StoredProcedure [dbo].[P_API_IPOS_SAVE_ZP]    Script Date: 2024-11-08 18:09:48 ******/
DROP PROCEDURE [dbo].[P_API_IPOS_SAVE_ZP]
GO

/****** Object:  StoredProcedure [dbo].[P_API_IPOS_SAVE_ZP]    Script Date: 2024-11-08 18:09:48 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO



CREATE PROC [dbo].[P_API_IPOS_SAVE_ZP] (
	@XPBH VARCHAR (50) -- 小票号
) AS
BEGIN

DECLARE @XHDH VARCHAR(50)=''; -- 零售销货单单号
DECLARE @THDH VARCHAR(50)=''; -- 零售退货单单号
DECLARE @ERRMSG NVARCHAR(4000) = N'',@ERRS INT
SET @ERRS=0
SELECT @XHDH=DJBH FROM LSXHD WITH(NOLOCK) WHERE XPBH=@XPBH
SELECT @THDH=DJBH FROM LSTHD WITH(NOLOCK) WHERE XPBH=@XPBH AND @XHDH=''

IF @XHDH='' AND @THDH=''
BEGIN
  SELECT 0
  RETURN
END

BEGIN TRAN
BEGIN TRY 
IF @XHDH <> ''
BEGIN
  INSERT INTO LSXHDZP (DJBH,SPDM,GG1DM,GG2DM,SL,SL_1,CKJ,ZK,DJ,DJ_1,JE,JE_1,BYZD1,BYZD2,BYZD3,BYZD4,BYZD5,BYZD6,BYZD7,BYZD8,BZ,DJ_3) 
  SELECT DJBH,SPDM,GG1DM,GG2DM,SL,SL_1,CKJ,ZK,DJ,DJ_1,JE,JE_1,BYZD1,BYZD2,BYZD3,BYZD4,XPBH,BYZD6,BYZD7,BYZD8,BZ,DJ_3
  FROM LSXHDMX WITH(NOLOCK) WHERE DJBH = @XHDH AND SP_Status=3 
  SET @ERRS=@ERRS+@@ERROR
  DELETE FROM LSXHDMX WHERE DJBH = @XHDH AND SP_Status=3 
  SET @ERRS=@ERRS+@@ERROR
END
ELSE IF @THDH <> ''
BEGIN
  INSERT INTO LSTHDZP (DJBH,SPDM,GG1DM,GG2DM,SL,SL_1,CKJ,ZK,DJ,DJ_1,JE,JE_1,BYZD1,BYZD2,BYZD3,BYZD4,BYZD5,BYZD6,BYZD7,BYZD8,BZ,DJ_3) 
  SELECT DJBH,SPDM,GG1DM,GG2DM,SL,SL_1,CKJ,ZK,DJ,DJ_1,JE,JE_1,BYZD1,BYZD2,BYZD3,BYZD4,XPBH,BYZD6,BYZD7,BYZD8,BZ,DJ_3
  FROM LSTHDMX WITH(NOLOCK) WHERE DJBH = @THDH AND SP_Status=3 
  SET @ERRS=@ERRS+@@ERROR
  DELETE FROM LSTHDMX WHERE DJBH = @THDH AND SP_Status=3 
  SET @ERRS=@ERRS+@@ERROR
END

EXEC xb_sjsx @XPBH

END TRY    

BEGIN CATCH    
    SET @ERRMSG = N'出现异常, 错误编号: ' + CONVERT(varchar, ERROR_NUMBER()) 
				+ N', 错误行号：' + CONVERT(varchar, ERROR_LINE()) 
				+ N', 错误消息：'    + ERROR_MESSAGE();    
    SET @ERRS=@ERRS+@@ERROR
END CATCH; 

IF @ERRS=0
BEGIN
 COMMIT TRAN
 SELECT 0
END
ELSE BEGIN
 ROLLBACK TRAN
 SELECT -1
END
   
IF @ERRMSG<>''
BEGIN
	INSERT INTO dbo.ProERRMSG( ProName ,FMID ,ERRMSG,BYZD1 )
	VALUES  ('P_API_IPOS_SAVE_ZP' ,@XPBH ,ISNULL(@ERRMSG,''),'')
	RETURN;
END
END	 
GO





